package com.opal.system.service;

import com.opal.domain.ReturnMessageData;
import com.opal.system.entity.table.OpalHrorg;
import com.opal.system.entity.table.OpalUser;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

public interface OpalUserService{
	
	/**
	 *  根据用户名查询User
	 * @param userName
	 * @return
	 */
	public OpalUser findById(String userName);
	
	/**
	 * 获取用户所有信息:后续更改为分页查询
	 * @return
	 */
	public List<OpalUser> selectAllUserService();

	/**
	 *获取用户所有信息:为tree准备数据
	 * @return
	 */
	Object selectAllUserTreeService(String userName);

	/**
	 * 获取用户所有信息:为layui的tree准备数据
	 * @return
	 */
	Object selectAllUserLayuiTableService(String userName);

	/**
	 * 添加用户：
	 * @param opalUser
	 * @return
	 */
	public ReturnMessageData addUserService(OpalUser opalUser, long[] roleId);
	
	/**
	 * 根据当前用户id查找角色
	 * @param userId
	 * @return
	 */
	public Object[] findByUserIdRoleService(long userId);
	
	/**
	 * 修改用户
	 * @param opalUser
	 * @param roleId
	 * @return
	 */
	public ReturnMessageData updateUserService(OpalUser opalUser, long[] roleId);
	
	/**
	 * 删除用户
	 * @param opalUser
	 * @return
	 */
	public ReturnMessageData deleteUserService(OpalUser[] opalUser);

	/**
	 * 获取所有组织
	 * @return
	 */
    ReturnMessageData selectAllHrorgService();

	/**
	 * 根据当前用户获取组织
	 * @return
	 */
	List<OpalHrorg> getUserOrgHrorgService(HttpServletRequest request);

    ReturnMessageData getPasswordService(String password);

	ReturnMessageData selfModifyPasswordService(String oldPassword, String newPassword, String newPassword2);

	/**
	 * 根据当前职位获取人员信息
	 * @return
	 */
	public List<OpalUser> getOpalUserByUserPosition(Integer userPosition);

	/**
	 * 根据当前组织和职位获取人员信息
	 * @return
	 */
	public List<OpalUser> getOpalUser(String pkOrg, Integer userPosition);

	/**
	 * 根据组织、部门、职位
	 * @return
	 */
	public List<OpalUser> getOpalUser(String pkOrg, String userDept, Integer userPosition);

	/**
	 * 根据部门、职位
	 * @return
	 */
	public List<OpalUser> getOpalUser(Integer userPosition, String userDept);

	/**
	 * 找部门经理：根据当前用户的部门、找上一级部门
	 * @return
	 */
	public List<OpalUser> getBuMenJingLiOpalUser(String userDept);

	/**
	 * 根据部门、组织获取人员信息
	 * @return
	 */
	public List<OpalUser> getOpalUserByUserPosition(String pkOrg, String userDept);

    Object updateByUserIdRoleService(Map<String, Object> map);

	/**
	 * 根据条件查询用户信息
	 * @param opalUser
	 * @return
	 */
	Object selectConditionUserService(OpalUser opalUser, Integer page, Integer rows);

}
